package com.viaje.action.lugar;

import org.apache.struts2.convention.annotation.*;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.*;

import javax.persistence.*;

import com.viaje.common.util.Utilitario;
import com.viaje.model.Lugar;

public class RegistrarLugarAction extends ActionSupport{
	
	private static final long serialVersionUID = 1L;
	
	private Lugar lugar;
	private String message;
	
	@Validations(
		       requiredStrings =
		        	{  @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.tipoviaje", key = "registrar.lugar.tipoviaje.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.pais", key = "registrar.lugar.pais.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.preferencias", key = "registrar.lugar.preferencia.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.actividades", key = "registrar.lugar.actividades.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.descripcion", key = "registrar.lugar.descripcion.required"),
		    		   @RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.latitud", key = "registrar.lugar.latitud.required"),
		        	@RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "lugar.longitud", key = "registrar.lugar.longitud.required")
		        	}
		    )
	
	@Action(value="/registrar-lugar",
	results={
			@Result(name="exito",type="tiles",location="message.tiles"),
			@Result(name="error",type="tiles",location="registrarLugar.tiles"),
			@Result(name="input",type="tiles",location="registrarLugar.tiles")},
	interceptorRefs={
			 @InterceptorRef("fileUpload"), 
			 @InterceptorRef("basicStack"),
			 @InterceptorRef("jsonValidationWorkflowStack")}
	)
	public String execute(){
		String result="exito";
		EntityManager em= 
				Utilitario.getInstance().getEntityManager();
		EntityTransaction tx=em.getTransaction();
		try{
			tx.begin();
			em.persist(lugar);
			tx.commit();
			result="exito";
			message = getText("registrar.lugar.message.exito");
		}catch (Exception e) {
			e.printStackTrace();
			tx.rollback();
			message = getText("registrar.lugar.message.error");
		}
		return result;
	}
	public Lugar getLugar() {
		return lugar;
	}
	public void setLugar(Lugar lugar) {
		this.lugar = lugar;
	}
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
}